YY-CHR.net
----------

配布元
https://www45.atwiki.jp/yychr/
使い方wiki
https://www45.atwiki.jp/yychr/
質問/要望/バグ報告
http://jbbs.livedoor.jp/bbs/read.cgi/computer/41853/1231162374


■概要
	YY-CHRは、ファミコンやスーパーファミコンなどの古い家庭用ゲームのROMに含まれる画像を表示・編集することができるドットエディタです。

	多くの画像形式に対応しています。対応形式は後述。
	画像形式を増やすプラグインを作成したい場合、掲示板に問い合わせてください。

	編集しやすくなるように、8x8ピクセル単位で並べ替えて表示する機能があります。
	並べ替えはツール上で編集可能です。

	ROM中の画像には色がついていないことが多いので、表示用に色を付けるパレットエディタがついています。(編集結果は画像には影響しません)
	またゲーム中の画像を再現しやすくするために、パレットをエミュレータのステートファイルから読み込む機能があります。

	ROMの中でプログラムと画像が明確に分かれていない場合は、お気に入り機能(ジャンプリスト)を使うと、
	ファイルを開くたびにアドレスを合わせたり、画像形式を合わせる必要がないので快適です。

	対応画像形式
		1BPP 8x8
		1BPP 16x16
		2BPP NES
		2BPP GB
		2BPP MSX
		2BPP MSX Screen2
		2BPP NGP
		2BPP VB
		2BPP 16x16 PCE
		3BPP 8x8
		3BPP SNES
		4BPP SNES/PCE(CG)
		4BPP PCE(SG)
		4BPP SMS/GG/WSC
		4BPP GBA
		4BPP MSX
		4BPP 8x8
		8BPP SNES(128x128)
		8BPP SNES Mode7



■動作環境
	Windows 10 または .NET Framework 4.0以降がインストールされている環境


■導入方法
	新規導入の場合、ZIPファイルをフォルダごと展開して適当な場所に置いてください。
	ただし、展開したファイルは\Windowsや\Program Filesの配下には入れないでください。
	実行はyy-chr.exeを実行してください。

	アップデートの場合、ZIPファイル内のiniファイル以外を上書きしてください。
	アップデートによっては、iniファイルの設定が無効となることがあります。アップデート後は設定をご確認ください。


■使い方 (手順)
    1. (準備) VirtuaNESやZSNESなどのエミュレータでゲームを起動し、改造したい画像をゲーム内で表示する。
    2. (準備) エミュレータででステートをセーブする。

    3. YY-CHRに改造したいROMファイル読み込む。(画面左側の領域にROMの内容が表示されます)
		ファイルは「CHR-ROM」タブに読み込まれます。

    4. (オプション操作) エミュレータのステートを開くと、ゲーム中のパレット(画面右下)が読み込まれます。
                        ※パレットは編集に使うだけで、編集結果やゲームには影響しません。

    5. CHR領域(画面左側)をスクロールして変更したいデータが綺麗に表示できる状態にする。

    6. データが見つかったら編集する。

    7. ファイルを保存する。 (編集結果が正しく保存されているか動作確認もしましょう)

	こちら(YY-CHR @wiki)も参照ください。画面の見方や基本的な使い方が説明されています。
		https://w.atwiki.jp/yychr/pages/21.html


■自動で読み込むファイル

    YY-CHRは、起動後にResources/yychr.*の定義ファイルを読み込みます。

    また、開いたROMファイル名に".pal", ".dat", ".adf"のついたファイルが存在するとき、自動で読み込みます。

    例) c:\nes\rom\game.nes     を開いた場合
        c:\nes\rom\game.nes.dat があればパレットテーブルとして読み込みます。
        c:\nes\rom\game.nes.pal があればパレットとして読み込みます。


■操作方法
  マウス操作については以下の通りです。ステータスバーのナビゲーションでも説明が表示されます。

    CHR領域(左側の画像表示領域)：Edit領域を選択するための領域
        左クリック : 通常選択。右の画面に編集対象範囲を表示します。
        右クリック : 範囲選択。コピー・貼り付けなどの範囲を選択します。
			Altキーを押しながら選択することで、1ドット単位での選択ができます。
		マウスホイール : スクロールします。移動量は設定で変更可能。

    Edit領域(右側の画像表示領域)：ペンなどで描画を行う領域
        左クリック : 描画。指定されたペンや描画方法で描画します。
        右クリック : スポイト。ポインタ位置の色を取得します。
		マウスホイール : 設定から機能を割当てできます。
			デフォルトではスクロール。Ctrl押しながらだとペンの選択、Shift押しながらだとパレットの選択。

    DATパレット(右側の32マスのパレット)：PALパレットから色を参照指定するパレットを選択する領域
        左クリック : 描画色の選択
        右クリック : DATパレットが参照しているPALパレットのRGB値の変更
		マウスホイール : スクロール

    PALパレット領域
        左クリック : DATパレットに使う色を選択する
        右クリック : パレットのRGB値の変更
		マウスホイール : スクロール


  ショートカットキーはメニューを参照してください。
  以下に、よく使うキーを書きます。

    ※リストボックスなどを非選択時
    Home    : アドレスをCHRの最初に
    End     : アドレスをCHRの最後に
    PgUp    : アドレスを-$1000 (1画面↑) ※アドレスの変化量は画像形式によります。この例は2bpp NESの場合です
    PgDn    : アドレスを+$1000 (1画面↓)
    ↑      : アドレスを-$0100 (1ライン↑)
    ↓      : アドレスを+$0100 (1ライン↓)
    ←      : アドレスを-$0010
    →      : アドレスを+$0010
    -       : アドレスを-$0001
    +       : アドレスを+$0001
    F3      : 画像のありそうなアドレスを検索する(画像が出ないこともあります) SNESなどで画像を探すときに使うといいです。

    Z,X,C,V : パレット0,1,2,3を選択
	N,M     : 前のパレット、次のパレットを選択

    Ctrl+↑ : 上下反転
    Ctrl+↓ : 左右反転
    Ctrl+← : 左回転
    Ctrl+→ : 右回転

    Shift+カーソル : カーソルの方向へシフト

    Shift+(貼り付け動作) : クリップボードの画像を減色して貼り付ける


■設定
	設定ファイルは、設定画面でOKを押したときと、YY-CHRを終了するときに保存されます。
	こちら(YY-CHR @wiki)も参照ください。いくつかの設定の効果が画像付きで説明されています
		https://w.atwiki.jp/yychr/?page=設定値とその効果

	Path
		RomPath : ROMファイルを開くダイアログの初期ディレクトリを設定する。 [default:]
		ExtPath : 追加ファイルを開くダイアログの初期ディレクトリを設定する。 [default:]
		StatePath : セーブステートファイルを開くダイアログの初期ディレクトリを設定する。 [default:]
		BmpPath : 画像ファイルを開くダイアログの初期ディレクトリを設定する。 [default:]
		BmpSaveDirType : BMPファイルのデフォルトの保存先ディレクトリを設定する。 [default:1]
	File
		SmallFileSaveSize : バンク1画面より小さなサイズのROMファイルを保存するとき、ROMのサイズを変更する。 [default:0]
		SaveClearUndoBuffer : ROMファイルを保存するとき、アンドゥバッファをクリアする。 [default:True]
		DefaultImageType : 画像ファイルを開く/保存するダイアログを表示するときのデフォルトの画像形式を設定する。 [default:0]
		LoadImagePaletteOnChrRomTab : CHR-ROMタブで開いた画像ファイルからパレットを読み込むかを設定する。 [default:False]
		EnableEditorForReadOnlyFile : 読み込み専用のパレットファイルでも編集を許可する。許可しない場合は別ファイルに保存して編集します。固定パレットを使うゲームのテンプレートを公開する場合、ファイルを編集禁止にすることで誤操作が減ります。 [default:False]
		EnableDetectRomHeaderSize : テンプレートファイルの*.settingや*.jumplistで、ROMのヘッダサイズ検出を有効にします。それらの設定ファイルに定義されているヘッダサイズを無視します。 [default:True]
		DivisionSizeForDetectRomHeaderSize : 検出するROMのヘッダサイズ＝[ROMサイズ]÷[この設定値]の余り [default:2048]
	Grid
		GridStyle : バンクビュー(バンク表示)と エディタビュー(編集領域)のグリッドの種類を設定する。 [default:4]
		GridBankVisible : バンクビュー(バンク表示)の グリッドを表示するか設定する。 [default:True]
		GridEditVisible : エディタビュー(編集領域)の グリッドを表示するか設定する。 [default:True]
		GridBankColor1 : バンクビュー(バンク表示)の グリッド1の色を設定する。 [default:.Color(0x80, 0xFF, 0xFF, 0xFF)]
		GridBankColor2 : バンクビュー(バンク表示)の グリッド2の色を設定する。 [default:.Color(0x20, 0xFF, 0xFF, 0xFF)]
		GridEditColor1 : エディタビュー(編集領域)の グリッド1の色を設定する。 [default:.Color(0x80, 0xFF, 0xFF, 0xFF)]
		GridEditColor2 : エディタビュー(編集領域)の グリッド2の色を設定する。 [default:.Color(0x20, 0xFF, 0xFF, 0xFF)]
		EditingRectColor : エディタビュー(編集領域)で 範囲指定するペンを使うときの 範囲の枠の色を設定する。 [default:.Color(0xFF, 0x80, 0xFF, 0xFF)]
	Option
		OptionSaveWindowPosition : ウィンドウの位置を保存する。 [default:False]
		OptionSavedWindowPosition : ウィンドウの位置。 [default:.Point(0,0)]
		OptionShowTitleAddress : ウィンドウのタイトルにアドレスを表示する。 [default:True]
		OptionShowAllMenu : すべてのメニューを表示する。 無効な場合、ツールバーと重複したり一般的でないメニュー項目は隠される。 [default:False]
		OptionShowToolbarAsButton : ツールバーをクラシックなスタイルのボタンで表示する。 一部のWindowsでは正しく表示できない可能性がある。 [default:False]
		CheckFont : インストールされたフォントをチェックする。 GUIフォントが存在しない場合、YY-CHRが英語モードで起動する。 LinuxかMacのwine環境では[true]を設定してください。 [default:True]
		CheckKeyOnActivated : YY-CHRがアクティブになったときにCtrl/Alt/Shiftキーをチェックする。YY-CHRがタスクバーから復帰できないときはこの値を[false]にしてください。 [default:True]
	Language
		CheckFont : インストールされたフォントをチェックする。 GUIフォントが存在しない場合、YY-CHRが英語モードで起動する。 LinuxかMacのwine環境では[true]を設定してください。 [default:True]
		StartupLanguageFromLng : YY-CHRを起動するときに、言語を言語ファイル[yychr.lng]から設定します。 [default:False]
	Control
		EditorMouseWheel : エディタのマウスホイールの機能。 [default:1]
		EditorMouseWheelCtrl : エディタのCtrl+マウスホイールの機能。 [default:3]
		EditorMouseWheelShift : エディタのShift+マウスホイールの機能。 [default:2]
		EditorMouseWheelAlt : エディタのAlt+マウスホイールの機能。 [default:0]
		EnableRightClickMenu : バンクビュー(バンク表示)で 右クリックメニューを有効にする。 [default:False]
		BankWheelScrollRate : バンクビュー(バンク表示)のマウスホイールのスクロール量を設定する。 [default:4]
	Dialog
		ShowSaveModifiedDialog : 変更したファイルを保存せずに閉じようとしたときに、処理を継続するかを確認するダイアログを表示する。 [default:True]
		ShowReloadExternalChangeDialog : 開いているファイルをYY-CHR以外で変更したとき、YY-CHRでファイルを再読み込みするか確認するダイアログを表示する。 再読み込みしない場合はYY-CHRで保存したときに外部ツールでの変更が上書きされてしまう。 [default:True]
		ShowLoadImageCutoffDialog : CHR-ROMタブで画像ファイルを開いたとき、範囲外を切り捨てたことをダイアログで表示する。 [default:True]
	View
		GuiSizeRate : GUIのサイズを設定する。 [default:0]
		EditRectSize : エディタの領域のサイズ。 [ピクセル] メイン画面の左下から設定可能。 [default:.Size(32, 32)]
		DefaultPaletteRowNum : ウィンドウサイズが小さい場合のパレットの表示行数。8以上を指定する場合、表示のためにウィンドウサイズを拡大する。(適正値: 8または16) [default:8]


■その他の情報
操作はC++版YY-CHRとほぼ同じですが、カーソルキーなどは、CHR選択領域にフォーカスがあるときしか効きません。
カーソルキーでアドレスが動かないときは、CHR選択領域をクリックしてみてください。


C++版から追加された機能
・画像形式が増えた。
	3BPP、4BPP、8BPPの形式を追加。
	PCエンジンのファイティングストリートで使われているらしい「4BPP 8x8」にも対応しています。
	MSXのScreen2形式2BPPを読み込み専用で追加

・画像形式のプラグインに対応
	pluginsフォルダに作成したdllを入れるとYY-CHRの画像形式で使うことができます
	プラグインはC#/VB.NETで作成することができます。

・.settingファイルを定義すると、開いているROMからパレットやパターン情報を読み込み/保存することができる
	settingファイルはテキスト形式です。
	使用例はテンプレートファイルを参照してください。
	また、設定項目はyychr.StateSettingとほぼ同じなので、参考にしてください。

	例) BladeBuster.setting
	-------------------▼ここから
	.DAT(E8)
	-------------------▲ここまで
	BladeBuster.nesファイルを開いたときに、nesファイルの0x000000E8からパレットテーブルを先頭(0x00)から32個(0x20)読み込みます。
	また、ファイルの保存時に、パレットテーブル部分も保存します。



■参考情報
ファミコンのプログラミングで役に立つ情報がある場所

	NES研究室(コンソールゲーム機研究所)
		http://hp.vector.co.jp/authors/VA042397/nes/index.html
	ファミコンの画面について(魔法使いの森)
		https://www.wizforest.com/OldGood/ntsc/famicom.html
	ファミコンで始める ~ 6502マシン語ゲームプログラミング
		https://github.com/suzukiplan/mgp-fc
	FC音源(ニコニコ大百科)
		https://dic.nicovideo.jp/a/fc%E9%9F%B3%E6%BA%90
	Nesdev (英語)
		https://wiki.nesdev.com/w/index.php/Nesdev

